#ifdef WITH_OPENGL

#pragma once
#include "widget.h"
#include "render_control.h"
#include "renderer_tags.h"

#include "window.h"
#include "render_control_opengl_impl_base.h"
#include "widget_factory.h"

namespace krryn{
namespace gui{
	class render_control_opengl_initializer;

	template<>
	class render_control<system::opengl_tag> : public widget{
	public:
		typedef render_control_opengl_initializer with;
		typedef render_control_opengl_impl_base impl;

		render_control(const with &a_Initializer);
		void activate();
		void swap_buffers();
	private:
		impl *m_Pimpl;
	};

	class render_control_opengl_initializer : public render_control_initializer
	<
		system::opengl_tag, 
		render_control_opengl_initializer
	> {};
}
}

#endif